package com.moli.iov.base.remote;

import com.moli.iov.base.model.dto.req.QueryVehicleFenceOpDto;
import com.moli.iov.base.model.dto.req.VehicleFenceReqDto;
import com.moli.iov.base.model.dto.req.VehicleFenceReqOpDto;
import com.moli.iov.base.model.dto.res.VehicleFenceResDto;
import com.moli.iov.base.model.po.VehicleFence;
import com.moli.iov.model.dto.req.PageExtend;
import com.moli.iov.rest.RestResponse;
import java.util.List;

/**
 * 业务处理围栏
 * @author whl
 */
public interface IVehicleFenceRemoteService {

  /**
   * 添加
   *
   * @param dto
   * @return
   */
  RestResponse saveVehicleFence(VehicleFenceReqDto dto);

  /**
   * 更新围栏
   * @param dto
   * @return
   */
  RestResponse updateVehicleFence(VehicleFenceReqDto dto);

  /**
   * 删除围栏
   * @param dto
   * @return
   */
  RestResponse deleteVehicleFence(VehicleFenceReqDto dto);

  /**
   * 查询列表
   * @param dto
   * @return
   */
  RestResponse<PageExtend<VehicleFenceResDto>>  listVehicleFence(VehicleFenceReqDto dto);

  /**
   * 重绘
   * @param dto
   * @return
   */
  RestResponse redrawVehicleFence(VehicleFenceReqDto dto);

  /**
   * op 添加围栏
   *
   * @param dto
   * @return
   */
  RestResponse saveVehicleFenceOp(VehicleFenceReqOpDto dto);

  /**
   * op修改围栏
   * @param dto
   * @return
   */
  RestResponse updateVehicleFenceOp(VehicleFenceReqOpDto dto);
  /**
   * op删除围栏
   *
   * @param dto
   * @return
   */
  RestResponse deleteVehicleFenceOp(VehicleFenceReqOpDto dto);
  /**
   *  报警服务专用
   *
   * @param vin
   * @return
   */
  List<VehicleFence> listVehicleFenceByVin(String vin);

  /**
   * 得到围栏
   * @param fenceId
   * @return
   */
  RestResponse VehicleFenceById(Long fenceId);
  /**
   * op 查询所有围栏
   *  fenceIdList 可以为null,为null时。查找全部
   * @return
   */
  RestResponse listVehicleFenceOp(QueryVehicleFenceOpDto dto);

  /**
   * 围栏是否绑定有车  fenceId
   * @param dto
   * @return
   */
  RestResponse isBindingVehicleByFenceId(QueryVehicleFenceOpDto dto);

  /**
   * Op根据围栏名称查找围栏
   * @param dto
   * @return
   */
  RestResponse listVehicleFenceByFenceNameOp(QueryVehicleFenceOpDto dto);

  /**
   * op根据vinList返回围栏信息
   * @param dto
   * @return
   */
  RestResponse listVehicleFenceByVinList(QueryVehicleFenceOpDto dto);

  /**
   * op根据围栏Id返回围栏信息
   * @param fenceId
   * @return
   */
  RestResponse getVehicleFenceOpById(Long fenceId);
}
